﻿using DevExpress.XtraEditors.Controls;
using DevExpress.XtraEditors.Repository;
using System.Collections;

namespace YanZhiwei.DotNet.DevExpress12._1.Utilities
{
    /// <summary>
    /// RepositoryItemComboBox帮助类
    /// </summary>
    public static class RepositoryItemComboBoxHelper
    {
        #region 数据绑定
        /// <summary>
        /// 数据绑定
        /// </summary>
        /// <param name="combox">RepositoryItemComboBox</param>
        /// <param name="source">ICollection</param>
        public static void Bind(this RepositoryItemComboBox combox, ICollection source)
        {
            /*说明：
             *所涉及的列叙设定FieldName，否则会出现无法选中的问题；
             *eg:
             *List<PersonInfo> _source = new List<PersonInfo>();
             *_source.Add(new PersonInfo("Sven", "Petersen"));
             *_source.Add(new PersonInfo("Cheryl", "Saylor"));
             *_source.Add(new PersonInfo("Dirk", "Luchte"));
             *repositoryItemComboBox1.Bind<PersonInfo>(_source); 
             */
            if (source != null)
            {
                try
                {
                    combox.BeginUpdate();
                    combox.Items.AddRange(source);
                    combox.ParseEditValue += combox_ParseEditValue;
                }
                finally
                {
                    combox.EndUpdate();
                }
            }
        }
        //解决'对象必须实现iconvertible'问题
        private static void combox_ParseEditValue(object sender, ConvertEditValueEventArgs e)
        {
            e.Value = e.Value.ToString();
            e.Handled = true;
        }
        #endregion 
    }
}
